<?php
//-----------------------------------------------------------------------------
/*
PHP-SDK: ziyouApi_sdk 的常用方法
1.
	//调用一个API,API名称，参数，可以参考API-WIKI文档
	//$apiRoute		API名称路由，如 /youji/get 表示获取游记信息
	//$params		API参数数组，为关联数组，如：array('youji_id'=>'6803,259937386656')
	//$method		API请求方法，可选值：get,post,delete
	ziyouApi_sdk::api($apiRoute, $params=array(), $method='get');


2.
	//获取最后一次API调用的错误信息
	ziyouApi_sdk::lastErr();

	//通用的错误数据格式：
	Array
	(
		[api] => /account/verify.smpauth
		[errno] => 210002
		[err] => 授权检查失败，当前接口必须登录用户才能访问!
	)

3.
	//设置用于存储用户登录状态的 callback hander，不指定时，系统自动用SESSION存储
	//用户状态的 hander ,注：如果get,set 指定的是字符串则当成函数处理
	$hander = array(
		'get'=>array($hander,'utGet'),
		'set'=>array($hander,'utSet')
	);
	ziyouApi_sdk::setUserHander($hander);
	//注：你也可以直接修改 ziyouApi_sdk::_setToken 和 ziyouApi_sdk::_getToken 方法实现你的存储方法

4.
	//用户登录API
	ziyouApi_sdk::login($user, $pwd);

5.
	//关于第三方账号的使用
	//目前自由游网，可以直接使用 sina微博，qq微博，人人　账号登录
	//$callback		登录回调URL，从第三方登录完成以后会跳转到此URL，并传递参数 $_GET['_tk']
	//$type			第三方账号的类型，可选值为 sina,qq,renren
	//return		返回一条URL，引导用户从第三方账号登录
	ziyouApi_sdk::getAuthorizeURL($callback, $type='sina');

	注：$callback URL所在的程序中，必须调用一次如下方法：
	ziyouApi_sdk::getAuthorizeToken();

6.
	//使用第三方账号登录时，解释并保存用户登录凭证
	//return 此方法返回用户登录凭证 TOKEN
	ziyouApi_sdk::getAuthorizeToken();
7.
	//API用户的退出，底层实现为：通过 hander 清空了 用户登录凭证（设置为空）
	ziyouApi_sdk::logout();

8.
	//设置SDK所使用的 APPKEY 和 SECRETKEY 
    //默认使用的是，配置文件中的 ZIYOU_SOURCE 与 ZIYOU_SKEY 常量
    ziyouApi_sdk::setApp($appKey, $secKey)
*/
//-----------------------------------------------------------------------------
//以下为 演示代码
session_start();
header("Content-type:text/html;charset=utf-8");
//包含API SDK 库文件
include_once( 'zyapi_sdk_lib/ziyouApi_sdk.class.php' );
//创建API实例
$oSdk 	= new ziyouApi_sdk();
//-----------------------------------------------------------------------------
//有登录，就有用户登录状态，开发者需要先创建两个用户状态的 hander, 一个用于保存用户登录状态，一个用于获取
//创建用户状态操作hander , 注：此步骤是可选，系统内置是用SESSION保存,此实例的HANDER只能在一个页面请求内有效
//如果你想登录之后在不同页面能继续使用，你可以使用内置的SESSION、COOKIE、，自己写一个保存方法

//设置用户状态 hander 此部分内容是可选的，userStHander 用于存储和获取用户登录状态，通常包含一个获取一个保存方法

	class userStHander{
		var $globalTk = '';
		function userStHander(){}

		function utSet($tk){
			$this->globalTk = $tk;
			return true;
		}

		function utGet(){
			return $this->globalTk ? $this->globalTk : '';
		}

	}

	//用户状态的 hander ,注：如果get,set 指定的是字符串则当成函数处理
	$hander = new userStHander();
	$userHander = array(
		'get'=>array($hander,'utGet'),
		'set'=>array($hander,'utSet')
	);
	$oSdk->setUserHander($userHander);
	//注：你也可以直接修改 ziyouApi_sdk::_setToken 和 ziyouApi_sdk::_getToken 方法实现你的存储方法
	//end 用户状态Hander
	/**/
//-----------------------------------------------------------------------------

echo "<pre>";

//以下是使用实例,你可以打开不同的注释，查看调用情况:


//-----------------------------------------------------------------------------
//未登录前，可以调用所有非登录权限的接口
//例：在未登录前获取游记信息,你可以打开以下两行的注释，尝试示登录状态访问接口

//$rst = $oSdk->api('/youji/get', array('youji_id'=>'6803,6804'), 'get');
//print_r($rst);//返回的游记信息


//-----------------------------------------------------------------------------
//尝试在未登录时访问需要登录的数据
//例：获取当前登录用户的个人资料,当本例返回错误信息,错误信息的结构如下所示
$rst	= $oSdk->api('/account/verify', array(), 'get');
print_r($rst);//返回个人资料，此例因未登录，所以返回了错误格式




/*
通用的错误数据格式：
	Array
	(
		[api] => /account/verify.smpauth
		[errno] => 210002
		[err] => 授权检查失败，当前接口必须登录用户才能访问!
	)
*/
//-----------------------------------------------------------------------------
//用户登录,以及登录读取API数据

//登录演示的用户账号
//用户名
$userName = 'ziyouapi@demo.com';
//密码
$pwd = 'zy654321';
//错误的密码
$errPwd = 'errpwd';

//---------------------------------
//你可以打开以下注释观察密码错误时的返回值，请勿频繁使用错误的密码尝试，API系统会作为暴力攻击而暂时封停此账号

//$st = $oSdk->login($userName, $errPwd);
//var_dump($st);
//获取错误信息
//$err = $oSdk->lastErr();
//print_r($err);
//---------------------------------

$st = $oSdk->login($userName, $pwd);
//检查是否成功登录
if ($st){
	var_dump($st);
}else{
	print_r($oSdk->lastErr());
}


//print_r($oSdk->http->getReqHeader());//查看CURL的HTTP交互数据
//print_r($oSdk->http->getReponse());//查看CURL的HTTP交互数据


//print_r($hander);//你可以查看$hander在登录后是否发生了改变
//登录结束
//-----------------------------------------------------------------------------
//尝试在登录之后，访问需要登录的数据
//例：获取当前登录用户的个人资料,当本例返回错误信息,错误信息的结构如下所示

//$oSdk->logout();//你可以尝试打开这个注释，会发现，退出后也不能获取个人信息了
$rst	= $oSdk->api('/account/verify', array(), 'get');
print_r($rst);//返回个人资料，此例已登录成功，所以返回用户数据

//print_r($oSdk->http->getReqHeader());//查看CURL的HTTP交互数据
//print_r($oSdk->http->getReponse());//查看CURL的HTTP交互数据
//游记数据
//$rst = $oSdk->api('/youji/get', array('youji_id'=>'18454913600,259937386656'), 'get');
//print_r($rst);//返回的游记信息
//-----------------------------------------------------------------------------


